﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ServirMovil.Clases.Movil;
using GS1.Library;

namespace ServirMovil
{
    public partial class frmMenuPrincipal : Form
    {
        #region --- Constructor ---
        public frmMenuPrincipal()
        {
            InitializeComponent();
        }
        #endregion

        #region --- Eventos formulario ---
        private void frmMenuPrincipal_Load(object sender, EventArgs e)
        {
            cargarFormulario();
        }

        private void frmMenuPrincipal_Closing(object sender, CancelEventArgs e)
        {
            finalizarFormulario();
        }

        private void btnInventario_Click(object sender, EventArgs e)
        {
            mostrarFormularioInventario();
        }

        private void btnBuscarExpediente_Click(object sender, EventArgs e)
        {
            mostrarFormularioBuscaExpediente();
        }

        private void btnAsignacionPorLote_Click(object sender, EventArgs e)
        {
            mostrarFormularioAsignacionLote();
        }

        private void mnuSalir_Click(object sender, EventArgs e)
        {
            salir();
        }
        #endregion

        #region --- Eventos LectorRFID ---
        private void psionRFID_CapturaError(string mensaje)
        {
            Util.ShowMessageboxExclamacion(mensaje, "Lector-RFID");
        }
        #endregion

        #region --- Metodos Propios ---
        private void cargarFormulario()
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;

                MetodosAplicacion.configuraFormulario(this);

                // Instanciando LectorRFID
                ParametrosAplicacion.psionRFID = new GS1.PsionRFID.PsionRFID();

                agregarEventoRFID();

                ParametrosAplicacion.psionRFID.iniciar("1", "2");
                //ParametrosAplicacion.psionRFID.establecerPotencia(50);
            }
            catch (Exception ex)
            {
                Util.MensajeError(ex, this.lblTitulo.Text);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }

        private void finalizarFormulario()
        {
            quitarEventoLectorRFID();

            if (ParametrosAplicacion.psionRFID != null)
            {
                ParametrosAplicacion.psionRFID.detener();
            }

            ParametrosAplicacion.psionRFID = null;
        }

        private void agregarEventoRFID()
        {
            ParametrosAplicacion.psionRFID.CapturaError += new GS1.PsionRFID.PsionRFID.CapturaErrorHandler(psionRFID_CapturaError);
        }

        private void quitarEventoLectorRFID()
        {
            ParametrosAplicacion.psionRFID.CapturaError -= new GS1.PsionRFID.PsionRFID.CapturaErrorHandler(psionRFID_CapturaError);
        }

        private void mostrarFormularioInventario()
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;

                using (frmMenuInventario frmMenuInventario = new frmMenuInventario())
                {
                    frmMenuInventario.ShowDialog();
                }
            }
            catch (Exception ex)
            {
                Util.MensajeError(ex, this.lblTitulo.Text);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }

        private void mostrarFormularioBuscaExpediente()
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;

                using (frmBuscarExpediente frmBuscarExpediente = new frmBuscarExpediente())
                {
                    frmBuscarExpediente.ShowDialog();
                }
            }
            catch (Exception ex)
            {
                Util.MensajeError(ex, this.lblTitulo.Text);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }

        private void mostrarFormularioAsignacionLote()
        {
            //Consulta si el usuario tiene el perfil autorizado
            if (ParametrosAplicacion.USUARIO_ACTUAL.idPerfil.Equals(ParametrosAplicacion.PERFIL_AUTORIZADO1) |
                ParametrosAplicacion.USUARIO_ACTUAL.idPerfil.Equals(ParametrosAplicacion.PERFIL_AUTORIZADO2))
            {
                try
                {
                    using (frmPrestamoLote frmAsignacionLote = new frmPrestamoLote())
                    {
                        frmAsignacionLote.ShowDialog();
                    }
                }
                catch (Exception ex)
                {
                    Util.MensajeError(ex, this.lblTitulo.Text);
                }
                finally
                {
                    Cursor.Current = Cursors.Default;
                }
            }
            else
            {
                Util.ShowMessageboxExclamacion("El usuario no tiene los permisos para realizar esta función", this.lblTitulo.Text);
            }
        }

        private void salir()
        {
            this.Close();
        }
        #endregion
    }
}